#include <stdio.h>
#include <unistd.h>
#include <string.h>

int main()
{
    int fd[2];
    int ret = pipe(fd);
    if(ret < 0)
    {
        perror("pipe");
        return 0;
    }
    printf("fd[0]:%d\n",fd[0]);
    printf("fd[1]:%d\n",fd[1]);

    pid_t pid = fork();
    if(pid < 0)
    {
        perror("fork");
        return 0;
    }
    else if(pid == 0)
    {
        //child --> read  --> fd[0]  规定从子进程读
        close(fd[1]);  //fd[1]控制写端，没用，先关闭
        char buf[1024] = {0};
        read(fd[0],buf,sizeof(buf) - 1);

        printf("child read:%s\n",buf);
    }
    else
    {
        //father --> write --> fd[1]  规定从父进程写
        sleep(2); //让子进程先运行
        close(fd[0]);  //fd[0]控制读端，没用，先关闭
        const char* content = "linux so easy";
        write(fd[1],content,strlen(content));
        
    }
    while(1)  //子进程执行完跳到while(1)，父进程执行完跳到while(1)，所以父子进程都不会结束
    {
        sleep(1);
    }

    return 0;
}
